class Watcher {
  constructor(vm, key, cb) {
    this.vm = vm;
    // data 中的属性名称
    this.key = key;
    this.cb = cb;

    // 把 watch 对象挂载到dep.target中
    Dep.target = this;
    // vm[key] 访问属性，触发get方式收集依赖
    this.oldValue = vm[key];  // 把对象属性值拿到, 赋值给另一个变量
    Dep.target = null;
  }
  update() {
    const newValue = this.vm[this.key];
    
    if (newValue === this.oldValue) {
      return;
    }

    this.cb(newValue)
  }
}